package com.zhuiyun.project.api.groupmessage.service;

import com.zhuiyun.project.api.groupmessage.entity.GroupMessage;
import com.zhuiyun.project.api.groupmessage.model.GroupMessageModel;
import com.zhuiyun.project.api.personmessage.entity.PersonMessage;
import com.zhuiyun.project.api.personmessage.model.PersonMessageModel;
import com.zhuiyun.project.common.response.CommonResult;
import com.zhuiyun.project.util.pageUtil.PageRequest;
import com.zhuiyun.project.util.pageUtil.PageResult;

import java.util.List;
import java.util.Map;

/**
 * @ClassName GroupServiceService
 * @Description TODO
 * @Author kdj
 * @Date 2023/7/24 19:50
 **/
public interface GroupMessageService {
    /**
     * @param userId
     * @param groupId
     * @param type
     * @Author kdj
     * @Description 根据群聊 群聊号 用户类型获取群聊列表消息
     * @Date 2023/7/25 10:29
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    List<Map> getGroupChat(int userId, int groupId, int type,PageRequest pageRequest);

    /**
     * @param groupMessageModel
     * @Author kdj
     * @Description 添加群聊消息
     * @Date 2023/7/25 17:05
     * @Return int
     */
    int insertGroupMsg(GroupMessageModel groupMessageModel);

    /**
     * @param userId
     * @param groupId
     * @param type
     * @Author kdj
     * @Description 获取群聊最后一条消息  针对一个人
     * @Date 2023/7/26 8:39
     * @Return com.zhuiyun.project.api.groupmessage.model.GroupMessageModel
     */
    Map getGroupChatLast(int userId, int groupId, int type);

    /**
     * @param groupId
     * @Author kdj
     * @Description 获取群聊最后一条消息 针对所有人
     * @Date 2023/7/26 8:39
     * @Return com.zhuiyun.project.api.groupmessage.model.GroupMessageModel
     */
    GroupMessageModel getGroupChatLast(int groupId);

    /**
     * @param userId
     * @param groupId
     * @param type
     * @param pageRequest
     * @Author kdj
     * @Description 根据群聊 群聊号 用户类型获取群聊列表消息 分页
     * @Date 2023/7/29 17:12
     * @Return com.zhuiyun.project.util.pageUtil.PageResult
     */
    PageResult getGroupChatSys(int userId, int groupId, int type, PageRequest pageRequest, String time);

    /**
     * @param groupId
     * @param userId
     * @Author kdj
     * @Description 清楚未读数
     * @Date 2023/7/29 20:36
     * @Return java.lang.Object
     */
    int cleanUnReadMsg(int groupId, int userId);

    /**
    * @Author kdj
    * @Description 删除消息
    * @Date 2023/7/31 9:35
    * @Return void
    * @param groupMessage
 * @param fromId
    */
    int upDelMsg(GroupMessage groupMessage, int fromId,int chatType);

    /**
    * @Author kdj
    * @Description  获取单聊聊天内容中最后一条消息（删除之后）
    * @Date 2023/7/31 12:06
    * @Return com.zhuiyun.project.api.groupmessage.entity.GroupMessage
    * @param fromId
     * @param toId
    */
    GroupMessage getMsgLastInfo(Integer fromId, Integer toId,int userId);

    /**
    * @Author kdj
    * @Description 撤回消息
    * @Date 2023/7/31 15:28
    * @Return void
    * @param groupMessageModel
    */
    int recallMsg(GroupMessageModel groupMessageModel);

    /**
    * @Author kdj
    * @Description 根据groupMsg对象找到发送者名字
    * @Date 2023/7/31 16:31
    * @Return java.lang.String
    * @param groupMessage
    */
    String getFromName(GroupMessage groupMessage);
    
    /**
    * @Author kdj
    * @Description 判断这个对象是不是最后一条消息
    * @Date 2023/7/31 16:58
    * @Return int
    * @param groupMessage
    */
    Boolean isLast(GroupMessage groupMessage);
}
